/******************************************************************************
* File description: IndexTabWidget.qml
* Function: 主页TabWidget
* Current Version: 1.0.0
* Author: 张宇轩
* Date: 2024-08-07
*  -----
*  Copyright by 博坤生物 .
 *****************************************************************************/
import QtQuick 2.14
import QtQuick.Layouts 1.14
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4

Item {
    id: root

    /* property 定义开始 */
    // 私有
    // tab标签
    // 尺寸
    property int _tabItemHeight: 20
    // 表格数据
    property var fenXiTableData: [] // 分析表格
    property var jianCeTableData: [] // 检测表格
    // 过滤统计信息
    property string _filterDataCal: ""

    // 信号
    // 内部信号
    // 渲染分析表格数据
    signal renderAnalysisTableData(var fenXiData);
    // 渲染检测表格数据
    signal renderIdentificationTableData(var jianCeData);
    // 过滤信息渲染
    signal setFilterData(var filterData)

    // 外部信号
    signal filterData(int index, var tableData); // 过滤数据

    // 函数
    // 渲染数据
    function renderTableData (fenXiData, jianCeData) {
        // 记录当前所在页下标
        var curPageIndex = tabView.currentIndex
        // 渲染第一页数据
        tabView.currentIndex = 0
        // 设置数据
        root.renderAnalysisTableData(fenXiData)

        // 渲染第二页数据
        // 设置数据
        tabView.currentIndex = 1
        root.renderIdentificationTableData(jianCeData)

        // 页码返回
        tabView.currentIndex = curPageIndex

        // 设置数据
        root.fenXiTableData = fenXiData
        root.jianCeTableData = jianCeData
    }

    // 渲染过滤信息
    function renderFilterData(filterData)
    {
        // 记录当前所在页下标
        var curPageIndex = tabView.currentIndex

        // 渲染第二页数据
        // 设置过滤信息数据
        tabView.currentIndex = 1
        root.setFilterData(filterData)
        // 存储统计信息
        root._filterDataCal = filterData

        // 页码返回
        tabView.currentIndex = curPageIndex
    }

    // 渲染检测方案数据
    function renderJianCePlansData(jianCeData){
        // 记录当前所在页下标
        var curPageIndex = tabView.currentIndex
        // 渲染第二页数据
        // 设置数据
        tabView.currentIndex = 1
        root.renderIdentificationTableData(jianCeData)
        // 页码返回
        tabView.currentIndex = curPageIndex
    }

    // 返回分析表格数据
    function getFenXiTableData () {
        return JSON.stringify(root.fenXiTableData)
    }

    // 返回检测表格数据
    function getJianCeTableData () {
        return JSON.stringify(root.jianCeTableData)
    }

    // 返回过滤统计信息数据
    function getFilterCalData () {
        return root._filterDataCal
    }


    /* property 定义结束 */

    TabView {
        id: tabView
        anchors.fill: parent

        // 分析数据页
        Tab {
            title: "分析数据"
            component: IndexAnalysisDataTable {
                id: analysisDataTable

                // 信号接收
                Connections {
                    target: root
                    // 数据渲染
                    function onRenderAnalysisTableData(fenXiData)
                    {
                        // 数据渲染
                        analysisDataTable.tableModels = fenXiData
                        // 表格位置重置
                        analysisDataTable.resetTableViewPosition(undefined, 0)
                    }
                }
            }
        }

        // 检测方案页
        Tab {
            title: "检测方案"
            component: IndexIdentificationPlanTable {
                id: identificationPlanTable

                // 信号接收
                Connections {
                    target: root
                    // 数据渲染
                    function onRenderIdentificationTableData(jianCeData)
                    {
                        // 数据渲染
                        identificationPlanTable.tableModels = jianCeData
                        // 表格位置重置
                        identificationPlanTable.resetTableViewPosition(undefined, 0)
                    }

                    // 过滤信息渲染
                    function onSetFilterData(filterData){
                        // 设置过滤数据统计
                        identificationPlanTable.setFilterData(filterData);
                        // 重置过滤条件（不触发渲染）
                        identificationPlanTable.filterBtnClicked(0, false)
                    }
                }

                // 事件
                // 数据过滤
                onFilterData: function(index){
                    // 设置数据
                    root.filterData(index, root.jianCeTableData)
                }
            }
        }

        // 设置tabbar样式
        style: TabViewStyle {
            frameOverlap: 1                 // 此属性保留各个选项卡按钮和框架之间的重叠量
            tabsAlignment: Qt.AlignLeft  // 选项卡按钮的水平对齐方式(默认左侧)
            // 占位元素，将tab标签向右挤10px
            leftCorner: Item {
                implicitWidth: 16
                implicitHeight: 62
            }

            // 每个tab标签
            tab: Item {
                implicitWidth: styleData.selected ? 120 : 110
                implicitHeight: 55 + tabBarItem.anchors.topMargin

                Rectangle {
                    id: tabBarItem
                    implicitWidth: styleData.selected ? 120 : 110
                    implicitHeight: styleData.selected ? 55 : 45
                    anchors {
                        topMargin: 8
                        bottom: parent.bottom
                    }
                    border.width: 0
                    radius: styleData.selected ? 4 : 0
                    color: styleData.selected ? "#FFFFFFFF" : "#FFA3BACC"

                    // 文字
                    Label {
                        id: tabBarLabel
                        anchors{
                            centerIn: parent
                        }
                        font.family: 'Alibaba PuHuiTi'
                        font.pixelSize: 18
                        color: styleData.selected ? "#FF222222" : "#FFFFFF"
                        text: qsTr(styleData.title)
                    }
                }
            }

            // 边框
            frame: Rectangle {border.width: 0}
        }
    }
}
